from paddleocr import PaddleOCR

__paddle_ocr = PaddleOCR(
    # 文本图像矫正，将畸变(扭曲)的图像恢复成平整、矩形的，为后续的文字识别提供高质量输入
    # use_doc_unwarping=False,
    # doc_unwarping_model_dir=os.path.join(OCR_MODEL_DIR, 'UVDoc_infer'),
    # 文档图像方向分类，判断文档图像方向：正向、倒置、旋转90度等。对其预处理，使处于正确阅读方向，提高后续步骤准确性
    # use_doc_orientation_classify=False,
    # doc_orientation_classify_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-LCNet_x1_0_doc_ori_infer'),
    # 文本检测，在处理后的平整文档图像中，找出所有文字位置，通常会以矩形或多边形边界框的形式框出每一行文字
    # text_detection_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_det_infer'),
    # text_detection_model_name="PP-OCRv5_server_det",  # 修改模型名称，默认使用 PP-OCRv5_server_det
    # 文本行方向分类，判断检测到的每一行文字的方向：水平、垂直、倒置等，确保文本识别在正确的方向上进行识别
    # use_textline_orientation=False,
    # textline_orientation_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-LCNet_x1_0_textline_ori_infer'),
    # 文本识别，接收每个文字区域的图像，将文字内容识别出来，并转换为可编辑的文本
    # text_recognition_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_rec_infer'),
    # text_recognition_model_name="PP-OCRv5_server_rec",
)


# __text_detection = TextDetection(
#     model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_det_infer'),
#     # model_name="PP-OCRv5_server_det"
# )
# __text_recognition = TextRecognition(
#     model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_rec_infer'),
#     # model_name="PP-OCRv5_server_rec"
# )
# __pp_structure_v3 = PPStructureV3(
#     device="cpu",
#     use_doc_unwarping=False,  # 文本图像矫正
#     use_doc_orientation_classify=False,  # 文档方向分类
#     use_textline_orientation=False,  # 文本行方向分类
#     use_region_detection=False,  # 文档区域检测
#     # layout_detection_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-DocLayout_plus-L_infer'),  # 版面区域检测
#     # text_detection_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_det_infer'),
#     # text_recognition_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_rec_infer'),
#     use_seal_recognition=True,  # 印章文本检测
#     # seal_text_detection_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv4_server_seal_det_infer'),
#     # seal_text_recognition_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-OCRv5_server_rec_infer'),
#     use_chart_recognition=False,  # 图表解析
#     # chart_recognition_model_dir=os.path.join(OCR_MODEL_DIR, 'PP-Chart2Table'),  # 图表解析
#     use_table_recognition=False,  # 表格识别
#     use_formula_recognition=False,  # 公式识别
# )


def paddle_ocr(input_data):  # PP-OCRv5
    # output = __paddle_ocr.predict("./general_ocr_002.png")
    # output = __paddle_ocr.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png")
    output = __paddle_ocr.predict(input_data)
    # for res in output:
    #     res.print()
    #     res.save_to_img("output")
    #     res.save_to_json("output")
    return output

# def text_detection(input_data):  # PP-OCRv5 文本检测模块
#     # output = __text_detection.predict("general_ocr_001.png")
#     output = __text_detection.predict(input_data)
#     # for res in output:
#     #     res.print()
#     #     res.save_to_img(save_path="./output/")
#     #     res.save_to_json(save_path="./output/res.json")
#     return output


# def text_recognition(input_data):  # PP-OCRv5 文本识别模块
#     # output = __text_recognition.predict(input="general_ocr_rec_001.png")
#     output = __text_recognition.predict(input=input_data)
#     # for res in output:
#     #     res.print()
#     #     res.save_to_img(save_path="./output/")
#     #     res.save_to_json(save_path="./output/res.json")
#     return output


# def pp_structure_v3(input_data):  # PP-StructureV3
#     # output = pipeline.predict(input="./pp_structure_v3_demo.png", )
#     output = __pp_structure_v3.predict(input=input_data, use_chart_recognition=False)
#     # for res in output:
#     #     res.print()
#     #     res.save_to_json(save_path="output")
#     #     res.save_to_markdown(save_path="output")
#     return output
